import requests

from datetime import datetime
from langchain_core.tools import tool

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from commit_func import get_token, md5_encrypt

# 定义英文键到中文键的映射
KEY_MAPPING = {
    'base': '基地',
    'corpname': '公司',
    'corpname_nc': 'nc公司',
    'curProfTitleProgress': '当前考取职称进度',
    'curProfessionalTitle': '当前考取职称',
    'deptname': '部门',
    'deptname_nc': 'nc部门',
    'email': '邮箱',
    'groupname': '集团名称',
    'groups': '用户在OA所属的集团',
    'isxnry': '是否虚拟人员：Y=是，N=否',
    'joblevel': '职级',
    'kjcorpname': '会计公司名称',
    'kjcorpname_nc': 'nc会计公司名称',
    'maritalname': '婚姻状况',
    'mobile': '手机号',
    'officephone': '办公电话',
    'pinji': '品级',
    'pk_corp': '公司pk',
    'pk_corp_nc': 'nc公司pk',
    'pk_dept': '部门pk',
    'pk_dept_nc': 'nc部门pk',
    'pk_group': '集团pk',
    'pk_group_nchr': '集团pk_nchr',
    'pk_kjcorp': '会计公司pk',
    'pk_kjcorp_nc': 'nc会计公司pk',
    'pk_post': '岗位pk',
    'pk_psndoc': '人员pk',
    'pk_psnjob': '任职记录pk',
    'pk_user': '用户pk',
    'postname': '岗位',
    'psnclname': '人员类别',
    'shortTel': '手机短号',
    'usercode': '工号',
    'username': '姓名',
    'workPlace': '工作地'
}

@tool
def get_personal_data(user_id):
    """根据用户输入的工号(user_id)，返回用户的个人信息"""
    # url = "http://192.168.22.92:8080/portal/api/bip/uinfo/getpsndoc"
    url = 'http://192.168.22.92:8080/portal/api/user/getpsndoc'

    header = {
        'token' : get_token(user_id)
    }

    timestamp = str(int(datetime.now().timestamp()))
    sign = md5_encrypt(user_id + timestamp + 'token')

    param = {
        "sign":sign,
        "timestamp": str(timestamp),
        "usercode":user_id,
    }

    response = requests.post(url, json=param, headers=header)
    response_data = response.json()

    # 检查响应是否包含data字段
    if 'data' in response_data and response_data['data'] is not None:
        # 转换data字段中的键名
        chinese_data = {KEY_MAPPING.get(key, key): value for key, value in response_data['data'].items()}
        response_data['data'] = chinese_data

    return response_data

if __name__ == "__main__":
    print(get_personal_data('040267'))
